/**
 * 
 */
package com.dream.house.service;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import cn.com.servyou.base.exception.ServiceException;
import cn.com.servyou.utils.Page;

import com.dream.house.dao.BuyDAO;
import com.dream.house.dao.RentDAO;
import com.dream.house.dao.ReturnDAO;
import com.dream.house.dao.RoomDAO;
import com.dream.house.entity.BuyDTO;
import com.dream.house.entity.ReturnDTO;
import com.dream.house.utils.Constants;

/**
 * 购房/租房信息管理
 * @author ahk
 * @since 1.0
 */
public class BuyService extends HouseBaseService {
	
	@Autowired
	private BuyDAO buyDAO;
	@Autowired
	private RentDAO rentDAO;
	
	@Autowired
	private RoomDAO roomDAO;
	@Autowired
	private ReturnDAO returnDAO;
	
	public boolean saveBuy(BuyDTO dto) throws ServiceException{
		dto.setBuy_id(buyDAO.getMaxId());
		return buyDAO.saveBuy(dto);
	}
	
	public boolean updateBuy(BuyDTO dto) throws ServiceException{
		return buyDAO.updateBuy(dto);
	}
	
	public boolean removeBuy(String id) throws ServiceException{
		return buyDAO.removeBuy(id);
	}
	
	public BuyDTO getBuy(String id) throws ServiceException{
		return buyDAO.getBuy(id);
	}
	
	public List<BuyDTO> findBuys(BuyDTO dto) throws ServiceException{
		return buyDAO.findBuys(dto);
	}
	
	public Page findByPage(Map<String, Object> condition, int pageNo,
			int pageSize) throws ServiceException{
		
		return buyDAO.findByPage(condition, pageNo, pageSize);
	}
	
	/**
	 * 执行审批动作<br>
	 * 1、买房审批通过后，需要把房子的使用状态设置为已买；1-已购买<br>
	 * 2、租房审批通过后，需要把房子的使用状态设置为已租；2-已租赁<br>
	 * 3、退房审批通过后，需要把房子的使用状态设置为未使用；0-未使用<br>
	 * 4、审核通过后，需要记录房购买记录到t_record表中。
	 * <p>
	 * 批审结果：0-未审批，1-未通过，9-已通过
	 * @param id(本表主键)
	 * @param room_id(房信息ID)
	 * @param status
	 * @param checkUser
	 * @return
	 * @throws ServiceException
	 */
	public boolean grant(String id,String room_id,String status,String checkUser) throws ServiceException{
		String s=null;
		if(status.equals(Constants.CHECK_STATUS_PASSED)){//审核状态为：9-已通过
			s="1";
			
			//1.1.需要把上一户的购房、租赁记录状态改变为：1-》2（0-已申请，1-已生效，2-已转让）
			buyDAO.updateBuyStatus(room_id, Constants.STATUS_TRANSFERRED);
			rentDAO.updateRentStatus(room_id, Constants.STATUS_TRANSFERRED);
			
			//2.更新房子使用状态为：1-已购买
			roomDAO.updateUseStatus(room_id, Constants.ROOM_SATUS_BUY);//已购买
		}
		//3.更新购房的审核状态,如审核通过-9，则需要把购房申请改为：1-已生效
		return buyDAO.grant(id, status, checkUser,s);
	}
	
	/**
	 * 获取房子的所有购买信息（如果房子有退房记录，则也获取到）<br>
	 * 退房类型（1-购房，2-租房）
	 * @param room_id
	 * @return List<BuyDTO>
	 * @throws ServiceException
	 */
	public List<BuyDTO> getBuysByRoom(String room_id) throws ServiceException{
		List<BuyDTO> buys = buyDAO.getBuysByRoom(room_id);
		if(!buys.isEmpty()){
			for(BuyDTO buy : buys){
				ReturnDTO ret = returnDAO.getReturnsByType("1", buy.getBuy_id());
				if(ret!=null)
					buy.setRet(ret);
			}
		}
		return buys;
	}

	@Override
	public boolean check(Map<String, String> condition) throws ServiceException {
		// TODO Auto-generated method stub
		return false;
	}

}
